Cloud computing is the delivery of computing as a service rather than a product, whereby shared resources, software, and information are provided to computers and other devices as a utility over a network (e.g., the Internet) on a per need basis. Cloud computing describes a new consumption and delivery model for IT services based on Internet protocols, and it typically involves provisioning of dynamically scalable and often virtualized resources.
The increasing popularity of cloud computing, driven by the wide-spread adoption of continuous internet connectivity for both fixed and user terminals, has led to the development of applications that are tailored to run both on the user device and the cloud. The applications assume the continuous internet connectivity of the user terminals to the cloud. Initial usage of cloud computing was primarily for clients connected over fixed broadband networks, utilizing the connectivity over the internet to access content and applications residing in centrally located data centers.
With the adoption of mobile broadband as a natural and affordable service for end-users, in parallel with the launch of smart phones fueling the increased use of mobile data and smart applications (“Apps”), the everyday user of internet services is nowadays increasingly relying on the cloud for carrying out his/her daily business.
Thus, many current applications are using the cloud to offload the memory of the user terminal, take advantage of the computation power available in the cloud, save the power of the user terminal, or to achieve another advantage. These applications are designed to include a client component running on the user terminal and a server component running in the cloud. Further, the application is designed to reduce the extra communication between these two components. Examples of such applications are email services, desktop virtualization, online gaming, etc.
However, the connectivity to the internet and its quality are taken for granted and many popular applications rely on the always-on connectivity of the user terminal so that the application functions properly. While this may be the case for many locations, there are instances when the user terminal moves from one area to another area, which results either in the loss of internet connectivity or degradation of the quality of the internet connection. For these cases, a distributed cloud may improve the quality (e.g., the latency) of the internet connection. However, a distributed cloud is faced with other problems as discussed next. For example, because the distributed cloud has the resources distributed at certain locations, there are cases when different locations do not host the same resources. Thus, there is a need providing the necessary resources at any desired location of the distributed cloud for integrating distributed processing and network provisioning capabilities. This will provide an enhanced platform for the execution of applications with specific demands. Therefore, the distributed clouds will effectively bring the cloud closer to the end users.
A distributed cloud 106, an example of which is illustrated in FIG. 1 as part of a system 100, deploys a smaller set of computing and storage resources (cloud domains 106a to 106n) at multiples locations rather than centralizing them in large data centers. This allows distributing the applications at different locations to better fulfill latency requirements and improve the interactions between the user terminals and the cloud applications. A telecommunication network 102 that includes at least a base station 102a and associated storage capabilities 102b, provides a user terminal 110 with the capability to use the resources of a cloud domain 106n. When the user 110 moves to another telecommunication network 104, the user terminal connects to another base station 104a having its storage capabilities 104b. The new base station 104a still connects to the original cloud domain 106n. Thus, a latency of the application run on the user terminal 110 may degrade.
The distributed cloud 106 might offer stable service level for the fixed devices but mobile users may observe a large variability in their usage experience as they move around in the network or out of the network. The latency or congestion in some part of the network may affect how the client component of the application on their device interacts with the server component.
Even though the system 100 aims at improving the end-user experience when utilizing cloud computing applications, it does not properly address the need to optimize the latency issues originating from the potentially quite long distance between the user terminal and the cloud component of the application, especially in the case of a roaming user.
Thus, there is a need to develop a mechanism or a method that coordinates the cloud computing resources, the application's needs, the locations of the user terminal, and the location of the cloud component of the application to improve the usage of the cloud and the quality of experience provided by the application to the user. Accordingly, it would be desirable to provide devices, systems and methods that avoid the afore-described problems and drawbacks.